.#{$ns}Select {
    display: inline-flex;
    vertical-align: middle;
    outline: none;
    position: relative;
    border: $Form-select-borderWidth solid $Form-select-borderColor;
    background: $Form-select-bg;
    border-radius: $Form-select-borderRadius;
    height: $Form-selectOption-height;
    $paddingY: (
            $Form-selectOption-height - $Form-input-lineHeight *
                $Form-input-fontSize - $Form-select-borderWidth * 2
        )/2;
    padding: $paddingY 0 $paddingY $Form-select-paddingX;
    cursor: pointer;
    color: $Form-select-color;

    &:not(.is-disabled):hover {
        background: $Form-select-onHover-bg;
    }

    &.is-disabled {
        color: $text--muted-color;
        background: $Form-input-onDisabled-bg;
        border-color: $Form-input-onDisabled-borderColor;
    }

    &-valueWrap {
        user-select: none;
        position: relative;
        flex-grow: 1;
        line-height: 1;
    }

    &-placeholder {
        color: $Form-select-placeholderColor;
        line-height: $Form-input-lineHeight;
    }

    &-input {
        cursor: pointer;
        display: inline-block;
        position: relative;
        z-index: 2;
        outline: none;
        border: none;
        background: transparent;
        line-height: $Form-input-lineHeight;
        height: $Form-input-lineHeight * $Form-input-fontSize;
    }

    &-value {
        line-height: $Form-input-lineHeight * $Form-input-fontSize;
        white-space: nowrap;
    }

    &--searchable {
        .#{$ns}Select-placeholder,
        .#{$ns}Select-value {
            position: absolute;
            top: 0;
            left: 0;
        }
    }

    &--multi {
        height: auto;
        min-height: $Form-selectOption-height;

        .#{$ns}Select-valueWrap {
            margin-bottom: -$gap-xs;

            > input {
                display: inline-block;
                width: px2rem(100px);
                margin-bottom: $gap-xs;
            }
        }

        .#{$ns}Select-values + .#{$ns}Select-input {
            transform: translateY(0);
        }

        .#{$ns}Select-value {
            position: static;
            user-select: none;
            line-height: $Form-input-lineHeight * $Form-input-fontSize -
                px2rem(2px);
            display: inline-block;
            vertical-align: middle;
            font-size: $Form-selectValue-fontSize;
            color: $Form-selectValue-color;
            background: $Form-selectValue-bg;
            border: px2rem(1px) solid $Form-selectValue-borderColor;
            border-radius: px2rem(2px);
            margin-right: $gap-xs;
            margin-bottom: $gap-xs;
        }

        .#{$ns}Select-valueLabel {
            padding: 0 $gap-xs;
        }
    }

    &-valueIcon {
        cursor: pointer;
        border-right: px2rem(1px) solid $Form-selectValue-borderColor;
        padding: 1px 5px;

        &:hover {
            background-color: darken($Form-selectValue-bg, 5%);
        }
    }

    &-arrow {
        margin-right: $gap-xs;
        width: px2rem(20px);
        text-align: center;
        display: flex;
        align-items: center;
        justify-content: center;
        line-height: 1;

        &:before {
            transition: transform 0.3s;
            content: $Form-select-caret-icon;
            font-family: $Form-select-caret-vender;
            font-size: $Form-select-caret-fontSize;
            display: inline-block;
            color: $Form-select-caret-iconColor;
        }
    }

    &.is-opened &-arrow:before {
        transform: rotate(180deg);
    }

    &-menuOuter {
        position: absolute;
        background: $Form-select-menu-bg;
        color: $Form-select-menu-color;
        border: $Form-select-outer-borderWidth solid
            $Form-input-onFocused-borderColor;
        left: px2rem(-1px);
        right: px2rem(-1px);
        min-width: 100%;
        top: 100%;
        z-index: 10;
        box-shadow: $Form-select-outer-boxShadow;
    }

    &-menu {
        max-height: px2rem(300px);
        overflow: auto;
    }

    &-option {
        padding: (
                $Form-select-menu-height - $Form-input-lineHeight *
                    $Form-input-fontSize - px2rem(2px)
            )/2 $Form-select-paddingX;

        &.is-active {
            color: $Form-select-menu-onActive-color;
            background-color: $Form-select-menu-onActive-bg;
        }

        &.is-highlight {
            color: $Form-select-menu-onHover-color;
            background-color: $Form-select-menu-onHover-bg;
        }

        &.is-disabled {
            color: $Form-select-menu-onDisabled-color;
            background-color: $Form-select-menu-onDisabled-bg;
        }

        &--placeholder {
            color: $Form-input-placeholderColor;
        }
    }

    &-option-hl {
        color: $red;
    }

    &.is-focused,
    &.is-opened {
        border-color: $Form-input-onFocused-borderColor;

        @if ($Form-select-onFocused-color !=$Form-select-color) {
            color: $Form-select-onFocused-color;
        }
    }

    &-spinner {
        line-height: $Form-input-lineHeight * $Form-input-fontSize;
    }

    &-clear {
        padding: px2rem(3px);
        cursor: pointer;
        display: flex;
        align-items: center;
        justify-content: center;
        position: relative;
        z-index: 2;

        svg {
            fill: $Form-input-iconColor;
            width: px2rem(10px);
            height: px2rem(10px);
        }

        &:hover svg {
            fill: darken($color: $Form-input-iconColor, $amount: 20%);
        }
    }
}

.#{$ns}Select-popover {
    margin-top: -$Form-select-borderWidth;
    background: $Form-select-menu-bg;
    color: $Form-select-menu-color;
    border: $Form-select-outer-borderWidth solid
        $Form-input-onFocused-borderColor;
    box-shadow: $Form-select-outer-boxShadow;
    border-top-left-radius: 0;
    border-top-right-radius: 0;
    min-width: px2rem(100px);
}

.#{$ns}SelectControl:not(.is-inline) > .#{$ns}Select {
    display: flex;
}

// 需要能撑开
@include media-breakpoint-up(sm) {
    .#{$ns}Form-control--sizeXs > .#{$ns}Select,
    .#{$ns}Form-control--sizeSm > .#{$ns}Select,
    .#{$ns}Form-control--sizeMd > .#{$ns}Select,
    .#{$ns}Form-control--sizeLg > .#{$ns}Select {
        min-width: 100%;
        display: inline-flex !important;
    }
}
